using UnityEngine;

public class EnemyController : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 2f;
    [SerializeField] private float damage = 10f; // GDD中小骷髅的伤害是10

    private Rigidbody2D rb;
    private Transform playerTransform;

    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Start()
    {
        // 游戏开始时，通过标签找到玩家
        GameObject player = GameObject.FindGameObjectWithTag("Player");
        if (player != null)
        {
            // 如果找到了玩家，就获取它的Transform组件
            playerTransform = player.transform;
        }
        else
        {
            // 如果找不到玩家，就在控制台打印一条错误信息，方便我们排查问题
            Debug.LogError("找不到标签为 'Player' 的对象，请检查玩家是否已正确设置Tag。");
        }
    }

    void FixedUpdate()
    {
        // 如果没有找到玩家，就什么也不做
        if (playerTransform == null) return;

        // 计算从怪物指向玩家的方向向量
        Vector2 direction = (playerTransform.position - transform.position).normalized;

        // 使用Rigidbody2D移动怪物
        rb.MovePosition(rb.position + direction * moveSpeed * Time.fixedDeltaTime);
    }

    // 新增：当怪物与其他物体发生物理碰撞时调用
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // 检查是否碰到了玩家
        if (collision.gameObject.CompareTag("Player"))
        {
            // 尝试从玩家身上获取PlayerStats组件
            PlayerStats playerStats = collision.gameObject.GetComponent<PlayerStats>();
            if (playerStats != null)
            {
                // 对玩家造成伤害
                playerStats.TakeDamage(damage);
            }
        }
    }
}